# coding: utf-8
import sys, string
from xml.dom import minidom, Node
from dados import Atributo,ListaClasses,Klasse,TipoDados,TipoTags
from createmodel import Codigo

def findItem(raiz,item):
    """
    Faz a busca somente em um nivem da arvore
    """
    return [x for x in raiz.childNodes if x.nodeName == item]




def run(inFileName):
    """rececebe um arquivo e faz a buscas por elementos relevantes para criação da camada de modelagem
    """
    outFile = sys.stdout
    doc = minidom.parse(inFileName)
    rootNode = doc.documentElement
    level = 0
    raiz = doc.documentElement.getElementsByTagName('UML:Namespace.ownedElement')[0] #elemento raiz

    xmi_tipos = findItem(raiz,"UML:DataType") #lista de tipos
    lst_tipos = TipoDados(xmi_tipos)
    
    xmi_tags = findItem(raiz,"UML:TagDefinition") #valores marcados
    lst_tags = TipoTags(xmi_tags)

    xmi_classes = findItem(raiz,"UML:Class") #lista de classes
    xmi_associacoes = findItem(raiz,"UML:Association") #lista de associações
    xmi_herancas = findItem(raiz,"UML:Generalization") #lista de herancas
    classes = ListaClasses(xmi_classes,lst_tipos,lst_tags,xmi_associacoes,xmi_herancas)


            

    
    #print lst_tags.listar()
    
    Codigo(classes)



def main():
    args = sys.argv[1:]
    if len(args) != 1:
        print 'usage: python test.py infile.xml'
        sys.exit(-1)
    run(args[0])


if __name__ == '__main__':
    main()

